package lanqiao;

public class l2016_03 {
    static int a[] = {1,2,3,4,5,6,7,8,9};//要对这个全排列
    static int ans;

    public static void main(String arg[]){
        f(0);
        System.out.println(ans);
    }

    static boolean check(){
        int x = a[3]*100 + a[4]*10 + a[5];
        int y = a[6]*100 + a[7]*10 + a[8];
        if ((a[1]*y + a[2]*x)%(y*a[2]) == 0 && a[0] + (a[1]*y + a[2]*x)/(y*a[2]) == 10)
            return true;
        return false;
    }

    /**模板！！！！！！
     * 递归回溯生成全排列，适用于无重复元素的情况*/
    //考虑第k位，前面已经排定
    static void f(int k){
        //出口在这里
        if (k == 9){//k=9表示前面1到9已经排好，这时一种排列生成
            //检查
            if (check())
                ans++;
        }
        //从k往后的每个数字都可以放在k位
        for (int i=k;i<9;++i){
            {int t=a[i];a[i]=a[k];a[k]=t;}//交换
            f(k+1);//递归
            {int t=a[i];a[i]=a[k];a[k]=t;}//回溯
        }
    }


}
